const fs = require('fs')

// promise 承诺
// 承诺有可能成功也可能失败

// promise三个状态
// 1.pending 等待中 默认状态
// 2.fulfilled 成功
// 3.rejected 失败
// resolve 成功时候 调用函数，会将promise的状态pending改变成fulfilled
// 执行的是.then的函数

// rejected：失败时候 调用函数，会将promise的状态pending改变成rejected
// 执行的时候.catch的函数

// promise中的状态只能修改一次 ，一旦promise的状态被修改了，就会状态冻结！!！
// 再调用resolve 或者 reject 就毫无意义

const p = new Promise(function (resolve, reject) {
  // promise中一般会封装一个异步的操作, 而异步的操作, 有成功有失败, 例如: ajax, 文件读写
  // resolve 成功的时候, 需要调用的函数
  // reject  失败的时候, 需要调用的函数
  fs.readFile('./a.txt', 'utf8', (err, data) => {
    if (err) {
      // 失败时候执行的代码  传入错误信息
      reject(err)
    } else {
      // 成功的时候执行的代码 传入正确信息
      resolve(data)
    }
  })
})

p.then(res => {
  console.log(res)
}).catch(err => {
  console.log(err)
})
